let upload = layui.upload;
let form = layui.form;
let $ = layui.jquery;
$(() => {
    // 点击查看展开下拉项
    $(".detail_btn").click(function (e) {
        e.preventDefault();//阻止超链接默认行为
        let $tr = $(this).closest("tr").next(".order_detail");
        if ($tr.is(":hidden")) {
            $tr.show()
            $(this).text("收起");
        } else {
            $tr.hide();
            $(this).text("查看");

        }
    })

    // 点击收货按钮
    $(".receive_btn").click(function (e) {
        e.preventDefault();
        const url = ctx + "/sys/api/v1/order/receive";
        let orderId = $(this).closest("tr").data("order-id");
        $.ajax({
            url,
            method: "patch",
            data: {
                id: orderId
            }, success(resp) {
                if (resp.success) {
                    layer.msg("确认收货成功");
                    location.reload();
                } else {
                    layer.msg(resp.msg || "确认收货失败");
                }
            }, error(resp) {
                layer.msg("确认收货异常");
            }

        })

    })

    // 点击退款按钮
    $(".refunding_btn").click(function (e) {
        e.preventDefault();
        const url = ctx + "/sys/api/v1/order/refunding";
        let orderId = $(this).closest("tr").data("order-id");
        $.ajax({
            url,
            method: "patch",
            data: {
                id: orderId
            }, success(resp) {
                if (resp.success) {
                    layer.msg("申请退款成功");
                    location.reload();
                } else {
                    layer.msg(resp.msg || "申请退款失败");
                }
            }, error(resp) {
                layer.msg("申请退款异常");
            }

        })
    })
    // 删除收货信息项按钮
    $(".receiver_info").on("click", "tr>td>.addr_del_btn", function (e) {
        e.preventDefault();
        let $tr = $(this).closest("tr")
        let maId = $tr.data("ma-id");

        const url = ctx + "/front/api/v1/account";
        $.ajax({
            url,
            method: "delete",
            data: {
                id: maId
            },
            success(resp) {
                if (resp.success) {
                    layer.msg(resp.msg || "删除收货信息项成功");
                    $tr.remove();
                } else {
                    layer.msg(resp.msg || "删除收货信息项失败");
                }
            }, error(resp) {
                if (resp.status === 401) {
                    layer.msg("账号状态为空,需要登录", {
                        icon: 0, // 图标类型，0 表示警告图标
                        time: 1000,
                        end: function () {
                            // 消息提示框关闭后执行的回调函数
                            location.href = ctx + "/vm/front/login";
                        }
                    });
                } else {
                    layer.msg("删除收货信息项异常");
                }

            }
        })

    })

    // 新增收获信息项按钮
    $("#addr_add_btn").click(function () {
        addMemberAddr();
    });

    //     渲染图片上传
    upload.render({
        elem: '#avatar-upload-btn',
        url: ctx + '/sys/api/v1/upload/image',
        data: {//传的数据,这个type是自己起的名字，在后面会用到
            type: "member_avatar",
        },
        exts: 'jpg|png|gif|bmp|jpeg|svg', //上传的类型
        size: 1024,
        done: function (resp) {//上传完成，响应200状态码进入
            let url = ctx + "/assets/" + resp.data;
            $(".avatar").attr("src", url);
            sessionStorage.setItem("member_avatar", resp.data);//将图片地址存到会话存储域

        },
        error: function () {
            layer.msg("上传图片失败");
        },

    });
    //     自定义验证规则,key为表单元素的name
    form.verify({
        cpassword: function (val, elem) {
            // 获取 password 字段的值
            let password = $("[name=password]").val();
            if (val !== password) {
                return "确认的密码不正确";
            }
        }
    })
//     保存个人信息按钮
    $("[name=account_info_btn]").click(function (e) {
        e.preventDefault();

        let pass = form.validate("#edit-form")//参数验证
        if (!pass) {
            return;
        }
        layer.confirm("是否确认保存?(保存后需重新登录)", function (index) {
            saveAccountInfo();
            layer.close(index);
        });

    })
})

// 增加收货信息项
function addMemberAddr() {
    layer.open({
        type: 2,//iframe层
        title: "新增收货信息",
        area: ['620px', '540px'],//宽和高
        skin: 'layui-layer-rim', // 加上边框
        content: "/vm/front/account/addMemAddr",
        btn: ['确定', '取消'],
        yes: function (index, layero) {
            let iframeWin = layero.find("iframe")[0].contentWindow;
            iframeWin.doSubmit(function (resp) {
                if (resp.success) {
                    layer.msg("添加成功");

                    layer.close(index);//关闭当前窗口
                    // 加上该列
                    // 将新行添加到表格的最后一行
                    var newRow = `
                     <tr data-ma-id="${resp.data.id}">
                         <td>${resp.data.name}</td>
                         <td>${resp.data.phone}</td>
                         <td>${resp.data.detail}</td>
                         <td><a class="addr_del_btn btn-small d-block">删除</a></td>
                    </tr>`;
                    $(".receiver_info>tbody").append(newRow);
                } else {
                    layer.alert("添加失败", {
                        icon: 2,
                        title: "错误"
                    });
                }
            })
        }
    });
}

// 保存个人信息项
function saveAccountInfo() {

    // 验证通过，向后台发请求
    const url = ctx + "/front/api/v1/account";
    // 收集表单数据
    var formData = $('#edit-form').serialize();

    // 图片填充
    let avatarUrl = sessionStorage.getItem("member_avatar");
    if (avatarUrl) {
        // 确保 URL 编码
        avatarUrl = encodeURIComponent(avatarUrl);
        formData += '&avatar=' + avatarUrl;
    }
    $.ajax({
        url,
        method: "put",
        data: formData,
        success(resp) {
            if (resp.success) {
                layer.msg("修改账户信息成功");
                location.href = ctx + "/vm/front/logout";
            } else {
                layer.msg(resp.msg || "修改账户信息失败");
            }
        }, error(resp) {
            let json = resp.responseJSON;
            let msg = json.msg || "修改账户信息异常";
            layer.msg(msg);
        }
    })
}